package main

import "fmt"

func main() {
	a := []int{1, 2, 3, 4, 5, 6}
	b := a[3:]
	fmt.Println("b=", b)

	c := a[1:3] //不包含结束位置
	fmt.Println("c=", c)

	//切片名[:结束位置] 不包含结束位置
	d := a[:4]
	fmt.Println("d=", d)

	//切片名[起始位置:结束位置:容量] 容量必须<=切片的容量
	//因为截取后的数据也是属于原切片的一部分，更改截取后数据的内容，原切片的内容也会更改
	e := a[0:4:5]
	fmt.Println("e=", e, "容量=", cap(e))

	//更改截取后数据的内容,原切片的数据内容也会更改
	f := a[0:2]
	f[0] = 10
	fmt.Println("f=", f)
	fmt.Printf("%p\n", f) //切片名本身就是地址
	fmt.Printf("%p\n", a)
	fmt.Println(a)
	fmt.Printf("%T\n",f)  //[]int
	fmt.Printf("%T\n", &f) //*[]int

	g := a[:]
	fmt.Println("g=", g)
}
